| Opis |
|---|
| Eksport do oprogramowania do cięcia (slicerów) dla drukarek 3D, oparty na podobnym makrze autorstwa cae2100. Eksportuje pojedynczy plik STL dla każdej widocznej części do tego samego katalogu, w którym znajduje się oryginalny plik projektu, a następnie otwiera go w oprogramowaniu do cięcia. Po uruchomieniu kod eksportuje aktualnie otwarty projekt do kilku plików STL, nazwanych zgodnie z etykietami części, i otwiera je w używanym slicerze. Makro domyślnie wyszukuje program [1] Cura, ale możesz użyć innego slicera, zmieniając odpowiedni ciąg znaków w kodzie makra. Macro version: 1.1 Last modified: 2020-10-30 FreeCAD version: All Download: ToolBar Icon Autor: WayofWood |
| Autor |
| WayofWood |
| Do pobrania |
| ToolBar Icon |
| Odnośniki |
| Przepisy na makropolecenia Jak zainstalować makrodefinicje Dostosowanie pasków narzędzi |
| Wersja Makrodefinicji |
| 1.1 |
| Data zmian |
| 2020-10-30 |
| Wersja FreeCAD |
| All |
| Domyślny skrót |
| Brak |
| Zobacz również |
| Macro 3d Printer Slicer |
Ten kod, po uruchomieniu, wyeksportuje widoczne bryły znajdujące się na najwyższym poziomie drzewa (bryły głębiej w strukturze zostaną pominięte) z aktualnie otwartego projektu do osobnych plików STL, a następnie otworzy je w używanym przez Ciebie programie do cięcia (slicerze). Makro domyślnie wyszukuje program Cura, ale można to zmienić, edytując zmienną `SLICERAPP` w kodzie źródłowym i podając ścieżkę do innego slicera.
Najlepiej korzystać z tego makra, tworząc skrót do niego na pasku narzędzi. Gdy będziesz gotowy do cięcia obiektów, po prostu kliknij ikonę makra – obiekty, tak jak są widoczne na ekranie w FreeCAD, pojawią się w interfejsie Twojego programu do cięcia, gotowe do dalszej obróbki. Makro utworzy także kilka plików STL, nadając im nazwy zgodne z nazwą pliku projektu oraz etykietami części, i zapisze je w tym samym katalogu co plik projektu.
Zmienną SLICERAPP można zmienić, aby używać dowolnego wybranego oprogramowania do cięcia. Jeśli jakiś konkretny obiekt nie zostanie wyeksportowany, może być konieczne dodanie jego typu do tablicy doexport.
Macro_3d_Printer_Slicer_Individual_Parts.py
import FreeCAD
import Mesh
import sys
import math
import os
import subprocess
SLICERAPP= "cura" # Put your Slicer program here
# some fuctions
def getPlacement(quat,vect,obj):
if quat[3] > -1 and quat[3] < 1:
delta = math.acos(quat[3])*2.0
scale = math.sin(delta/2)
rx = quat[0]/scale
ry = quat[1]/scale
rz = quat[2]/scale
else:
delta = 0
rx = 0
ry = 0
rz = 1
info0 = "translation "+str(vect.x)+" "+str(vect.y)+" "+str(vect.z)
info1 = "rotation "+str(rx)+" "+str(ry)+" "+str(rz)+" "+str(delta)
return info0+" "+info1
# some definitions
placement = App.Placement(App.Vector(0,0,0),App.Rotation(0,0,0,1))
# user need to set this directory where slicing software is located
OutDir = FreeCAD.ActiveDocument.FileName.replace(".FCStd", "--")
visible_objs = []
# Get Objects in document
doc = App.ActiveDocument
objs = doc.Objects
stlFile = ""
stlFiles = [ SLICERAPP ]
# hide all
for obj in objs:
print(obj.Label + "//" + obj.TypeId)
print(len(obj.InList))
if obj.ViewObject.isVisible() and hasattr(obj, 'Shape') and (len(obj.InList) <= 1):
visible_objs.append(obj)
for obj in visible_objs:
stlFile = OutDir+str(obj.Label)+".stl"
Mesh.export([obj],stlFile)
stlFiles.append(stlFile)
print ("Exporting " + stlFile + "\n")
print ("Calling subprocess: " + str(stlFiles)+"\n")
subprocess.Popen(stlFiles)
Podziękowania dla cae2100 za opracowanie oryginalnego kodu makra – dostępnego również tutaj.
Podziękowania dla Wmayera za pomoc przy pisaniu tego skryptu.
Oryginalny wątek na forum: https://forum.freecad.org/viewtopic.php?f=10\&t=4686